perm filename APP6[AIM,DBL] blob
sn#151679 filedate 1975-03-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .DEVICE XGP
C00003 00003 \7APPENDIX 6. \* \3CF .... RUNNING\*
C00036 ENDMK
C⊗;
.DEVICE XGP
.FONT 1 "FIX25"
.FONT 2 "SIGN57"
.FONT 3 "SHD40"
.FONT 4 "BDI25"
.FONT 5 "NGB30"
.FONT 6 "NGR20"
.PAGE FRAME 53 HIGH 75 WIDE
.TURN ON "↓_π{"
.TURN ON "\" FOR "%"
.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
.MACRO E ⊂ APART END ⊃
.TABBREAK
.EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
.EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
.COUNT PAGE PRINTING "1"
.NEXT PAGE
\7APPENDIX 6. \* \3CF .... RUNNING\*
.NOFILL
\7<Here is the synthesized program itself, CF, running.>\*
←\4ENTER(T)\*
USER INTERRUPT LEVEL... \40\*
\7PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
\7PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
CLASSIFICATORY-CONCEPT-FORMATION)
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
ARCH
OBJECTS (A B C)
MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
ARCH
OBJECTS (A B C)
MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (S A B) (S C B))\*
(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS IS
ARCH))
PLEASE GIVE ME NAME-OF-CLASS
\4ARCH\*
ARCH
OBJECTS (A B C)
MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B))\*
(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS IS
ARCH))
PLEASE GIVE ME NAME-OF-CLASS
\4NOTHING\*
ARCH
OBJECTS (A B C)
MUSNT HAVE ((TOUCH A C))
MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS IS
ARCH))
PLEASE GIVE ME NAME-OF-CLASS
\4NOTHING\*
ARCH
OBJECTS (A B C)
MUST HAVE ((S A B))
MUSNT HAVE ((TOUCH A C))
MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS IS
ARCH))
PLEASE GIVE ME NAME-OF-CLASS
\4NOTHING\*
ARCH
OBJECTS (A B C)
MUST HAVE ((S A B) (S C B))
MUSNT HAVE ((TOUCH A C))
MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
\7<notice that at this point, the model for ARCH is the usual one>\*
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS IS
TOWER))
PLEASE GIVE ME NAME-OF-CLASS
\4ROW\*
ARCH
OBJECTS (A B C)
MUST HAVE ((S A B) (S C B))
MUSNT HAVE ((TOUCH A C))
MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
TOWER
OBJECTS (A B C D)
MUST HAVE ((S A B))
MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
ROW
OBJECTS (A B C)
MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(ARCH (A B C D) (S A B) (TOUCH A C))\*
ARCH
OBJECTS (A B C (D))
MUST HAVE ((S A B))
MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
\7<notice how contradictory user input is handled: features are simply
transferred from the MUST/MUSTNOT sets to the MAY set>\*
TOWER
OBJECTS (A B C D)
MUST HAVE ((S A B))
MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
ROW
OBJECTS (A B C)
MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(HALT)\*
\7PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY-CONCEPT-FORMATION TYPE OF
CONCEPT-FORMATION)
FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
1 EXIT FROM SYSTEM
2 CONTINUE SERVING, AS BEFORE
3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
OK, GO .......... \43\*
USER INTERRUPT LEVEL... \410\*
\7The user has switched to a mode where he can interrupt after each BEING
gets control, and ask it questions.\*
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** SATISFY *** (CF-1) \7<the control history stack. Note that the
top element is CF-1, not SERVE.>\*
REQUEST: \4WHAT
\*(SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON
CONCEPT FORMATION)))
REQUEST: \4HOW
\*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
REQUEST: \4WHY
\*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISITE
TO BE SATISFIED)
REQUEST: \4OLDER
\*CF-1
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT
STRUCTURING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
REQUEST: \4WHY
\*(CONCEPT-LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE, AND CONCEPT-FORMATION
IS TOO GENERAL TO USE AS IT IS)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4BEING
\*PAD-2
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS;
USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
WILL BE THE ENTIRE DOMAIN))
REQUEST: \4WHY
\*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO
CLASSES, AND PARTITION-A-DOMAIN IS TOO GENERAL
TO USE AS IT IS)
REQUEST: \4HOW
\*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
THE PARTITION ONE PAIR AT A TIME; HERE A
PAIR IS <ELEMENT, CLASS-NAME>)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** TAKE-HOLD-OF-3 *** (PAD-2 CF-1)
REQUEST: \4WHY
\*(PUP WANTS ELEMENT-4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT
AND TAKE-HOLD-OF IS TOO GENERAL TO USE AS
IT IS)
REQUEST: \4HOW
\*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER
TO GIVE ELEMENT-4 TO US)
REQUEST: \4AFFECTS
\*((ELEMENT-4 POSSIBLE CALLED)
(ELEMENT-OBJECTS-11 POSSIBLE CALLED)
(ELEMENT-CLASSNAME-13 POSSIBLE CALLED)
(ELEMENT-RELNS-15 POSSIBLE CALLED))
REQUEST: \4QUIT
\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B) (BLOCK A]\*
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** SOME-PART-OF-14 *** (TAKE-HOLD-OF-3 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT
BREAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
REQUEST: \4WHY
\*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT, AND
SOME-PART-OF IS TOO GENERAL TO USE AS IT IS)
REQUEST: \4META-CODE
\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
EVAL ARG1))
(CAR ARG1))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** FOREACH-17 *** (GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBLE
NAMES-OF-CLASS ,WHICH IS
SET-OF-POSSIBLE-NAMES-OF-CLASS ,AND PERFORM
(TEST-18 POSSIBLE-NAME-OF-CLASS
(COMMENT FOR SATISFACTION OF GOAL CRITERIA))
ON EACH, UNTIL SOME SPECIFIED TERMINATION
CONDITION IS REACHED))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4BEING
\*TEST-18
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS
THE DESIRED CONDITIONS (COMMENT FOR SATISFACTION
OF GOAL CRITERIA)))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** COMPARE-26 *** (COMPARE-19 TEST-18 FOREACH-17 GET-HOLD-OF-8
PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B)
(BLOCK C) (TOUCH A C) (S C B))
WITH
((BLOCK A))))
REQUEST: \4WHY
\*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C)
S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
AND COMPARE IS TOO GENERAL TO USE AS IT IS)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** CONTRADICTS-27 *** (COMPARE-26 COMPARE-19 TEST-18 FOREACH-17
GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
THE COLLECTION ((BLOCK A))))
REQUEST: \4HOW
\*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
RELATIONSHIP BETWEEN (S A B) AND ((BLOCK A)))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** JOIN-23 *** (COMPARE-19 TEST-18 FOREACH-17 GET-HOLD-OF-8 PAD-2
CF-1)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** TEST-18 *** (FOREACH-17 GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** CONTRADICTS-27 *** (COMPARE-26 COMPARE-19 TEST-18 FOREACH-17
GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4META-CODE
\*(PROGN
(COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
(COMMENT IN ALL CALLS TO DATE, ARG2 IS
INSTANTIATED AS ELEMENT-RELNS-15)
(COND ((MEMBER ARG1 YES-RELNS-28)
(COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
(NOT (MEMBER ARG1 ARG2)))
((MEMBER ARG1 NO-RELNS-29)
(COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A
CONTRADICTION IFF IT IS A MEMBER OF ARG2)
(MEMBER ARG1 ARG2))
(T (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2; EITHER
CASE IS ALLOWABLE; SO WE NEVER HAVE A
CONTRADICTION)
NIL)))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** TEST-18 *** (FOREACH-17 GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
DESIRED CONDITIONS (COMMENT FOR SATISFACTION
OF GOAL CRITERIA)))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** CONTRADICTS-27 *** (COMPARE-26 COMPARE-19 TEST-18 FOREACH-17
GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION
TO THE COLLECTION ((BLOCK A))))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** CONTRADICTS-27 *** (COMPARE-26 COMPARE-19 TEST-18 FOREACH-17
GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
THE COLLECTION ((BLOCK A))))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE-NAME-OF-CLASS
IS ROW))
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** ASK-USER-ABOUT-60 *** (FOREACH-17 GET-HOLD-OF-8 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION
INVOLVING NAME-OF-CLASS))
REQUEST: \4WHY
\*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK-USER-ABOUT
IS TOO GENERAL TO USE AS IT IS)
REQUEST: \4HOW
\*(ASK THE USER WHAT THE RESOLUTION IS)
REQUEST: \4META-CODE
\*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
NAME-OF-CLASS))
(PRIN1
"
PLEASE GIVE ME ")
(PRINT ARG1)
(SET ARG1 (READ)))
REQUEST: \4QUIT
\*
PLEASE GIVE ME NAME-OF-CLASS
\4NOTHING\*
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** MODIFY-STRUCTURE-9 *** (PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING
"NOTHING" AS AN ELEMENT))
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4BEING
\*CONDITIONAL-INSERTION-44
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** COMPLEX-ALTERATION-46 *** (COMPLEX-ALTERATION-45
MODIFY-STRUCTURE-9 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF
THE SAME OUTER LIST))
REQUEST: \4WHY
\*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALENT
TO UPDATING OUR DESCRIPTION OF A SINGLE
PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL
TO A DECENT CONCEPT FORMATION
PROGRAM, AND COMPLEX-ALTERATION IS TOO GENERAL
TO USE AS IT IS)
REQUEST: \4HOW
\*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
REQUEST: \4OLDER
\*COMPLEX-ALTERATION-45
REQUEST: \4CH
\*(COMPLEX-ALTERATION-46) *** COMPLEX-ALTERATION-45 *** (MODIFY-STRUCTURE-9
PAD-2 CF-1)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** IS-OF-TYPE-61 *** (PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED.
THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
KNOWLEDGE: (COMMENT BREAKAWAY)))
REQUEST: \4META-CODE
\*(EQUAL NAME-OF-CLASS HALT)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4CH
\*NIL *** FOREACH *** (PAD-2 CF-1)
REQUEST: \4WHAT
\*(GO THROUGH THE KNOWN SPACE OF NAMES,
WHICH IS SET-OF-POSSIBLE-NAMES-OF-CLASS,
AND PERFORM
(PROGN (PRINT NAME)
(COND ((GETP NAME CLASS-OBJECTS-33)
(PRIN1 "OBJECTS ")
(PRINT (GETP NAME
CLASS-OBJECTS-33))))
(COND ((GETP NAME CLASS-YES-RELNS-35)
(PRIN1 "MUST HAVE ")
(PRINT (GETP NAME
CLASS-YES-RELNS-35))))
(COND ((GETP NAME CLASS-NO-RELNS-36)
(PRIN1 "MUSNT HAVE ")
(PRINT (GETP NAME
CLASS-NO-RELNS-36))))
(COND ((GETP NAME CLASS-MAYBE-RENS-37)
(PRIN1 "MAY HAVE ")
(PRINT (GETP NAME
CLASS-MAYBE-RELNS-37))))
(TERPRI)
T)
ON EACH, UNTIL
SOME SPECIFIED TERMINATION CONDITION IS REACHED)
REQUEST: \4QUIT
\*
ARCH
OBJECTS (A B C (D))
MUST HAVE ((S A B))
MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
TOWER
OBJECTS (A B C D)
MUST HAVE ((S A B))
MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
ROW
OBJECTS (A B C)
MUST HAVE ((TOUCH A C))
MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4SET-OF-POSSIBLE-NAMES-OF-CLASS
\*(ARCH TOWER ROW)
REQUEST: \4CH
\*NIL *** TAKE-HOLD-OF-3 *** (PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT-4 IN A TRIVIAL
WAY; EITHER BY ACCESSING IT OR BY READING
IT IN))
REQUEST: \4QUIT
\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(??? (A B C) (BLOCK A) (BLOCK B]\*
DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YES
\*REQUEST: \4ELEMENT-4
\*(??? (A B C) (BLOCK A) (BLOCK B))
REQUEST: \4CH
\*NIL *** SOME-PART-OF-12 *** (TAKE-HOLD-OF-3 PAD-2 CF-1)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
.
.
.
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4NO
\*
(COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
.
.
.
REQUEST: \4CH
\*NIL *** SIMPLE-COMPARE-FN-43 *** (BETTER-38 CONDITIONAL-INSERTION-55
MODIFY-STRUCTURE-42 COMPLEX-ALTERATION-45
MODIFY-STRUCTURE-9 PAD-2 CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
A CONSTANT VALUE))
REQUEST: \4WHY
\*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE, AND SIMPLE-COMPARE-FN IS
TOO GENERAL TO USE AS IT IS)
REQUEST: \4QUIT
\*DO YOU WANT TO INTERRUPT ME NOW, TO ASK ABOUT WHAT I'M DOING? \4YYES
\*
WRONG; TYPE YES OR NO ......... INTERRUPT? \4YES
\*REQUEST: \4CH
\*NIL *** BETTER-38 *** (CONDITIONAL-INSERTION-55 MODIFY-STRUCTURE-42
COMPLEX-ALTERATION-45 MODIFY-STRUCTURE-9 PAD-2
CF-1)
REQUEST: \4EXPLICIT-ARGS
\*(B1 B2)
REQUEST: \4B1
\*(S A B)
REQUEST: \4B2
\*(S C D)
REQUEST: \4OLDER
\*CONDITIONAL-INSERTION-55
REQUEST: \4CH
\*(BETTER-38) *** CONDITIONAL-INSERTION-55 *** (MODIFY-STRUCTURE-42
COMPLEX-ALTERATION-45 MODIFY-STRUCTURE-9 PAD-2
CF-1)
REQUEST: \4WHAT
\*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A
((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE
ELEMENT INTO ITS PARENT
STRUCTURE))
REQUEST: \4META-CODE
\*(PROGN
(SETQ RESULT-7 (LIST-JOIN RESULT-5 RESULT-6
(SETDIFFERENCE ELEMENT-RELNS-15
(APPEND (GETP NAME-OF-CLASS
CLASS-YES-RELNS-35)
(GETP NAME-OF-CLASS
CLASS-NO-RELNS-36)
(GETP NAME-OF-CLASS
CLASS-MAYBE-RELNS-37))
)))
NIL
(COND
(RESULT-7
(PUT NAME-OF-CLASS
CLASS-MAYBE-RELNS-37
(MERGE-IN RESULT-7
(GETP NAME-OF-CLASS
CLASS-MAYBE-RELNS-37)
BETTER-38)))
(T (SETQ RESULT-7 NIL))))
REQUEST: \4RESULT-7
\*((S A B))
REQUEST: \4RESULT-6
\*NIL
REQUEST: \4RESULT-5
\*((S A B))
REQUEST: \4(GETP NAME-OF-CLASS CLASS-MAYBE-RELNS-37]
\*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
REQUEST: \4QUIT
.
.
.
\*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT-4)
\4(HALT)\*
FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
1 EXIT FROM SYSTEM
2 CONTINUE SERVING, AS BEFORE
3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
OK, GO .......... \41\*
"EXITING SYSTEM"
\7<end of session with the synthesized program>\*
←\4SET-OF-POSSIBLE-NAMES-OF-CLASS\*
(ARCH TOWER ROW HALT)
←\4CDR(ARCH)\*
(CLASS-OBJECTS-33 (A B C (D))
CLASS-CLASSNAME-34 ARCH
CLASS-YES-RELNS-35 ((S A B))
CLASS-NO-RELNS-36 NIL
CLASS-MAYBE-RELNS-37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B)))